﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PDS_ANDU.Entidades;
using System.Windows.Forms;
using PDS_ANDU.DTO;

namespace PDS_ANDU.Controles
{
    public class ControlNotificacion
    {
        public ControlNotificacion()
        {

        }

        public List<Deporte> getDeportes()
        {
            return DAO.DAO.getDeportes();
        }
        public List<Equipo> getEquipos()
        {
            return DAO.DAO.getEquipos();
        }
        public List<Deportista> getDeportistas()
        {
            return DAO.DAO.getDeportistas();
        }
        public List<Torneo> getTorneos()
        {
            return DAO.DAO.getTorneos();
        }

        public bool publicarNoticia(string titulo, string enlace, DateTime fecha, string resumen, List<Deporte> deportes, List<Torneo> torneos, List<Equipo> equipos, List<Deportista> deportistas)
        {
            List<Categoria> listaCategoriasSeleccionadas = new List<Categoria>();

            foreach (Deportista e in deportistas)
                listaCategoriasSeleccionadas.Add(e);
            foreach (Equipo e in equipos)
                listaCategoriasSeleccionadas.Add(e);
            foreach (Torneo t in torneos)
                listaCategoriasSeleccionadas.Add(t);
            foreach (Deporte d in deportes)
                listaCategoriasSeleccionadas.Add(d);


            Noticia miNoticia = new Noticia(titulo, resumen, fecha, enlace, listaCategoriasSeleccionadas);

            return DAO.DAO.persistirNoticia(miNoticia);
        }


        /// <summary>
        /// Este metodo llama al metodo del DAO que obtiene una lista de notificaciones, y
        /// lo transforma en una lista de DTONotificaciones que tiene los datos necesarios
        /// para que se puedan mostrar luego en la interfaz de usuario.
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>

        public List<DTONotificacion> obtenerNotificaciones(string user)
        {
            List<DTONotificacion> notificaciones = DAO.DAO.obtenerNotificaciones(user);

            return notificaciones;

            /*
            bool encontrado = false;
            int i,j,k,w,z=0;//variables para los for
            List<Perfil> perfiles= DAO.DAO.getPerfiles(user);//perfiles del usuario
            List<Perfil> perfilesAux= new List<Perfil>();//lista que contendra los perfiles de los DTONotificacion de notificacionesAux
            List<DTONotificacion> notificacionesAux = new List<DTONotificacion>();//lista utilizada para retorno del metodo
            List<Notificacion> notificaciones = DAO.DAO.obtenerNotificaciones(user);// lista de las notificaciones asociadas a una cuenta de suscriptor

            //a cada notificacione obtenida del DAO se le asignas sus correspondientes categorias
            for (j = 0; j < notificaciones.Count; j++)
            {
                notificaciones[j].Noticia.Categorias = DAO.DAO.getCategorias(notificaciones[j]);
            }

            //el bucle hace que se asignen a un determinado perfil sus categorias asociadas
            for (k = 0; k < perfiles.Count; k++)
            {
                perfiles[k].Categorias=DAO.DAO.getCategoriasPerfil(perfiles[k]);
            }

            //por cada notificacion se buscara el perfil que tenga las categorias de la misma
            for (w = 0; w < notificaciones.Count; w++)
            {
                while(!encontrado && z<perfiles.Count)
                {
                    if (notificaciones[w].comprobarPerfil(perfiles[z]))
                    {
                        perfilesAux.Add(perfiles[z]);
                        encontrado = true;
                    }
                    else
                        z++;
                }//fin while
                encontrado = false;
            }//fin for

            //MessageBox.Show(perfilesAux.Count + " -- " + notificaciones.Count);
               
            for (i = 0; i < notificaciones.Count; i++)
            {

                notificacionesAux.Add(new DTONotificacion(notificaciones[i].Noticia.Numero, perfilesAux[i], notificaciones[i].Noticia.Titulo, notificaciones[i].Noticia.Resumen, notificaciones[i].Noticia.Enlace));
            }
            return notificacionesAux;
             
        }
         */
        }//fin de la clase
    }

}
